package com.dffl.es.esstudy.feign;

import com.dffl.es.esstudy.document.EsSku;
import com.dffl.es.esstudy.page.Page;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * elasticsearch 搜索
 * @author liwensihan
 * @version 0.1
 * @date 2021/05/12 15:09
 */
public interface EsSearchFeignClient {


    /**
     * 新增 / 修改索引
     * @return
     */
    @PostMapping("save")
    String add(@RequestBody EsSku sku);

    /**
     * 删除索引
     * @return
     */
    @PostMapping("delete/{id}")
    String delete(@PathVariable Long id);
    /**
     * 清空索引
     * @return
     */
    @PostMapping("delete_all")
    String deleteAll(@PathVariable String id);

    /**
     * 根据ID获取
     * @return
     */
    @PostMapping("get/{id}")
    EsSku getById(@PathVariable Long id);

    /**
     * 根据获取全部
     * @return
     */
    @PostMapping("get_all")
    List<EsSku> getAll();

    /**
     * 搜索
     * @param keyword
     * @return
     */
    @PostMapping("query/{keyword}")
    List<EsSku> query(@PathVariable String keyword);

    /**
     * 搜索，命中关键字高亮
     * @param keyword   关键字
     * @param fields    搜索字段名称，多个以“，”分割
     * @return
     */
    @PostMapping("query_hit")
    List<EsSku> queryHit(@RequestParam String keyword, @RequestParam String fields);

    /**
     * 搜索，命中关键字高亮
     * @param pageNo    当前页
     * @param pageSize  每页显示的数据条数
     * @param keyword   关键字
     * @param fields    搜索字段名称，多个以“，”分割
     * @return
     */
    @PostMapping("query_hit_page")
    Page<EsSku> queryHitByPage(@RequestParam int pageNo, @RequestParam int pageSize
            , @RequestParam String keyword, @RequestParam String fields);

    /**
     * 删除索引库
     * @param indexName
     * @return
     */
    @PostMapping("delete_index/{indexName}")
    String deleteIndex(@PathVariable String indexName);
}
